﻿using System;
using System.Linq.Expressions;
using System.Collections.Generic;

namespace IslandUnit
{
    public interface ICreateIsolation<TDependency> where TDependency : class
    {
        StubItemSetup<TDependency, TResult> WithStubFor<TResult>(Expression<Func<TDependency, TResult>> method);
        StubListSetup<TDependency, TResult> WithStubFor<TResult>(Expression<Func<TDependency, IList<TResult>>> method);
        StubEnumerableSetup<TDependency, TResult> WithStubFor<TResult>(Expression<Func<TDependency, IEnumerable<TResult>>> method);
        MockSetup<TDependency> WithMockFor(Expression<Func<TDependency, object>> method);
        MockSetup<TDependency> WithMockFor(Expression<Action<TDependency>> method);
    }
}
